home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 22 / 022.d81 / library manager (.txt) < prev    next >
Commodore BASIC  |  2022-08-26  |  16KB  |  585 lines

  1. 220 dim k1$(3) :rem keyword table
  2. 250 dim s3(75) : rem screen variable field table
  3. 280 dim ah$(500) : rem author table
  4. 310 rem
  5. 340 rem load screen matrix's
  6. 370 rem
  7. 400 read a : rem figure out how many screen tables
  8. 430 for m = 0 to a-1 : i=m*25 : read s3(i)
  9. 460 for p = 1tos3(i) : read s3(p+i) : next p
  10. 490 next m
  11. 520 at = 0 : rem prime for one time author table load
  12. 550 p1$="2":p2$="1":z$=","
  13. 580 goto 1870
  14. 610 rem
  15. 640 rem field filling subroutine
  16. 670 rem
  17. 700 bt=0:c1=1:r1=0:b$="": rem initialize back tab, row/column and buffer
  18. 730 gosub 1300 : rem tab to next field
  19. 760 gosub 1540 : rem read a character
  20. 790 if a$=chr$(13) then b$=b$+" ":goto 1180
  21. 820 if a$<> chr$(20) then goto 1000: rem check for delete key
  22. 850 if(c1=1 and r1=0)then 760:rem leave alone if at first position
  23. 880 b$=left$(b$,len(b$)-1) : rem shrink buffer by one
  24. 910 if c1=1 then r1=r1-1: c1=s3(q+2):bt=c1-1:gosub 1300:goto 760
  25. 940 c1 = c1 - 1 :bt=c1-1: rem back up one position if in middle
  26. 970 gosub 1300:goto 760 : delete previous except at beginning of field
  27. 1000 b$ = b$ + a$
  28. 1030 c1=c1+1 : rem bump col count
  29. 1060 if c1<= s3(q+2) goto 760 : rem check if end of columns
  30. 1090 r1=r1+1:c1=1:bt=0 : rem yes
  31. 1120 if r1< s3(q+3) then gosub 1300:goto 760 : rem if not last row tab
  32. 1150 if r1 < s3(q+3) then 760 : rem end of row/field? if not read more
  33. 1180 return
  34. 1210 rem
  35. 1240 rem tabbing subroutine
  36. 1270 rem
  37. 1300 print "";
  38. 1330 print tab(s3(q+1)+bt-1);
  39. 1360 for r3 = 1 to (s3(q)-1)+r1:print "";:next r3
  40. 1390 print chr$(18)" [157]"; :rem space for back tab
  41. 1420 return
  42. 1450 rem
  43. 1480 rem the following are keyboard read and cursor blink subroutines
  44. 1510 rem
  45. 1540 get a$:if a$ = "" then gosub 1720:goto 1540
  46. 1570 ifa$=","ora$=";"ora$=":"thena$=" " : rem purge input delimiters
  47. 1600 if(a$<" " or a$>"_")and (a$<> chr$(13) and a$<> chr$(20)) then a$=" "
  48. 1630 if a$<>chr$(13) and a$<>chr$(20) then print a$;:ps=1
  49. 1660 if f<3 and ps=1 then print "[157]";:ps=0
  50. 1690 return
  51. 1720 print chr$(146)" [157]";:forx=1to200:next
  52. 1750 print chr$(18)" [157]";:forx=1to200:next:return
  53. 1780 rem
  54. 1810 rem main menu
  55. 1840 rem
  56. 1870 f = 1 : rem set to form one
  57. 1900 poke 53280,7:poke 53281,2
  58. 1930 print "";"[147]";""
  59. 1960 print "  welcome to personal library manager!"
  60. 1990 print ""
  61. 2020 print "              do you want"
  62. 2050 print ""
  63. 2080 print "               to update"
  64. 2110 print ""
  65. 2140 print "                   or"
  66. 2170 print ""
  67. 2200 print "          retrieve abstracts?"
  68. 2230 print ""
  69. 2260 print "        type 'u' - update"
  70. 2290 print "             'r' - retrieve"
  71. 2320 print "             'h' - help"
  72. 2350 print "             'q' - quit"
  73. 2380 print  ""
  74. 2410 print "             -->[ ]<--";"[157][157][157][157][157]";
  75. 2440 gosub 1540
  76. 2470 if a$ = "q" then load"hello connect",8
  77. 2500 if a$ = "r" then gosub 5770
  78. 2530 if a$ = "u" then gosub 2740
  79. 2560 if a$ = "h" then gosub 16300
  80. 2590 if f<> 1 then goto 1870
  81. 2620 goto 2440
  82. 2650 rem
  83. 2680 rem this is the update form
  84. 2710 rem
  85. 2740 f = 2 : rem set to form two
  86. 2770 poke 53280,5:poke 53281,7
  87. 2800 print "";"[147]";""
  88. 2830 print "            do you want to"
  89. 2860 print ""
  90. 2890 print "            add or delete  "
  91. 2920 print ""
  92. 2950 print "              abstracts?"
  93. 2980 print ""
  94. 3010 print ""
  95. 3040 print "        type 'a' - add"
  96. 3070 print "             'd' - delete"
  97. 3100 print "             'q' - quit"
  98. 3130 print  ""
  99. 3160 print "             -->[ ]<--";"[157][157][157][157][157]";
  100. 3190 gosub 1540
  101. 3220 if a$ = "q" then return
  102. 3250 if a$ = "a" then gosub 3460
  103. 3280 if a$ = "d" then gosub 4840
  104. 3310 if f <> 2 then goto 2740
  105. 3340 goto 3190
  106. 3370 rem
  107. 3400 rem this is the add form
  108. 3430 rem
  109. 3460 f = 3 : rem set to form three
  110. 3490 poke 53280,14:poke 53281,1
  111. 3520 print "";"[147]"
  112. 3550 if se=0 then goto 3610
  113. 3580 print "         re-enter abstract data[146]":goto 3640
  114. 3610 print "            add an abstract"
  115. 3640 print " abstract title  -                     [146]"
  116. 3670 print tab(19)"                    [146]"
  117. 3700 print " author          -                     [146]"
  118. 3730 print " document title  -                     [146]"
  119. 3760 print " abstract date   -                     [146]"
  120. 3790 print " abstract        -                     [146]"
  121. 3820 print tab(19)"                    [146]"
  122. 3850 print tab(19)"                    [146]"
  123. 3880 print tab(19)"                    [146]"
  124. 3910 print "   type 'return' - tab"
  125. 3940 print "             'p' - process"
  126. 3970 print "             'q' - quit"
  127. 4000 print "             -->[ ]<--"
  128. 4030 q=1: rem initialize field pointer
  129. 4060 gosub 700:rem - 1st field
  130. 4090 f1$=b$
  131. 4120 q=1+(1*4)
  132. 4150 gosub 700:rem - 2nd field
  133. 4180 f2$=b$
  134. 4210 q=1+(2*4)
  135. 4240 gosub 700:rem - 3rd field
  136. 4270 f3$=b$
  137. 4300 q=1+(3*4)
  138. 4330 gosub 700:rem - 4th field
  139. 4360 f4$=b$
  140. 4390 q=1+(4*4)
  141. 4420 gosub 700:rem - 5th field
  142. 4450 f5$=b$
  143. 4480 q=1+(5*4)
  144. 4510 gosub 700 :  rem - action field
  145. 4540 se=1
  146. 4570 if a$=chr$(13) then print chr$(146)" ";:goto 3520
  147. 4600 se=0
  148. 4630 if a$ = "p" then gosub 9460
  149. 4660 if a$ = "q" then return
  150. 4690 if f<> 3 then goto 3460
  151. 4720 goto 4480
  152. 4750 rem
  153. 4780 rem this is the delete form
  154. 4810 rem
  155. 4840 f = 5 : rem set to form five
  156. 4870 poke 53280,8:poke 53281,3
  157. 4900 print "";"[147]"
  158. 4930 print ""
  159. 4960 if se=0 then goto 5020
  160. 4990 print "          [144] re-enter delete data[146]":goto 5050
  161. 5020 print "          delete an abstract"
  162. 5050 print ""
  163. 5080 print " abstract title  -                     [146]"
  164. 5110 print tab(19)"                    [146]"
  165. 5140 print ""
  166. 5170 print "    type 'return' - tab"
  167. 5200 print "             'p' - process"
  168. 5230 print "             'q' - quit"
  169. 5260 print ""
  170. 5290 print "             -->[ ]<--"
  171. 5320 q=26: rem initialize field pointer
  172. 5350 gosub 700:rem - 1st field
  173. 5380 f1$=b$
  174. 5410 q=26+(1*4)
  175. 5440 gosub 700 : rem - action field
  176. 5470 se=1
  177. 5500 if a$=chr$(13) then print chr$(146)" ";:goto 4900
  178. 5530 se=0
  179. 5560 if a$ = "p" then gosub 14470
  180. 5590 if a$ = "q" then return
  181. 5620 if f<> 5 then goto 4840
  182. 5650 goto 5410
  183. 5680 rem
  184. 5710 rem this is the retrieve form
  185. 5740 rem
  186. 5770 f = 6 : rem set to form six
  187. 5800 poke 53280,5:poke 53281,1
  188. 5830 print "";"[147]";""
  189. 5860 if se=0 then goto 5920
  190. 5890 print "         re-enter retrieve data[146]":goto 5950
  191. 5920 print "          retrieve an abstract"
  192. 5950 print " enter abstract title, author's name,"
  193. 5980 print " both, or '*' in author field (to see"
  194. 6010 print " all authors and their abstracts)."
  195. 6040 print " enter up to three keywords and a '$' "
  196. 6070 print " in author for keyword search."
  197. 6100 print " title/keywords  -                     [146]"
  198. 6130 print tab(19)"                    [146]"
  199. 6160 print " author/*/$/    -                      [146]"
  200. 6190 print ""
  201. 6220 print "   type 'return' - tab"
  202. 6250 print "             'p' - print"
  203. 6280 print "             'v' - view"
  204. 6310 print "             'q' - quit"
  205. 6340 print "             -->[ ]<--"
  206. 6370 q=51
  207. 6400 gosub 700 : rem get 1st field
  208. 6430 f1$=b$
  209. 6460 q=51+(1*4)
  210. 6490 gosub 700 : rem get 2nd field
  211. 6520 f2$=b$
  212. 6550 q=51+(2*4)
  213. 6580 gosub 700 : rem get action field
  214. 6610 se=1
  215. 6640 if a$=chr$(13) then print chr$(146)" ";: goto 5830
  216. 6670 se=0
  217. 6700 if a$ = "p" or a$ = "v" then gosub 12250
  218. 6730 if a$ = "q" then return
  219. 6760 if f<> 6 then goto 5770
  220. 6790 goto 6550
  221. 6820 rem
  222. 6850 rem below are tables for managing the variable fields of the forms.
  223. 6880 rem each table contains the
  224. 6910 rem count of items in the data list, in sets of four, composed of
  225. 6940 rem start row/column, length and depth of field.
  226. 6970 rem
  227. 7000 data 3 : rem number of screen tables
  228. 7030 data 24,5,20,20,2,8,20,20,1,10,20,20,1,12,20,20,1,14,20,20,4,24
  229. 7060 data 18,1,1,8,12,20,20,2,23,18,1,1
  230. 7090 data 12,12,20,20,2,15,20,20,1,23,18,1,1
  231. 7120 rem
  232. 7150 rem author table full/empty checking and filling routine
  233. 7180 rem
  234. 7210 if ah$(1) <> "" then goto 7330 : rem if table is not empty, jump
  235. 7240 at = val(p2$)
  236. 7270 for x = 1 to at
  237. 7300 input#3, ah$(x): next
  238. 7330 return
  239. 7360 rem
  240. 7390 rem convert record pointer to binary
  241. 7420 rem
  242. 7450 r1=val(p1$):r2=0: if r>256then r2=int(r1/256):r1=r1-256*r2
  243. 7480 return
  244. 7510 rem
  245. 7540 rem this routine bumps "at", the author table pointer
  246. 7570 rem and puts the author and the pointer "pf$" in the table
  247. 7600 rem
  248. 7630 ah$(at) = f2$: at = at + 1
  249. 7660 ah$(at